<!DOCTYPE html>
<html lang="en">
<head>
  <title>写给小白和初级程序员</title>
  <meta charset="UTF-8">
  <meta name="description" content="ltoddy's blog">
  <meta name="author" content="liutao">
  <meta name="author" content="ltoddy">
  <meta name="author" content="just for fun">

  <link rel="icon" href="../../static/me.jpg">
  <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
        integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

  <!-- jQuert Microsoft CDN -->
  <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
  <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"
          integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
          crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
  <div class="page-header">
    <h3>写给小白和初级程序员</h3>
  </div>
  <p>首先我不是一个多么经验丰富的程序员，我一年工作经验都没有，目前还在上大学。但是我参见过ACM比赛，后来也受邀成为了ACM学生会员。</p>
  <p>不得不承认的一点是，我刷过的算法，数据结构相关的题一点也不少。编程思想还是有的，加之在大学伊始老师就一直强调程序设计，我相信我还是有那么一点见解的。</p>
  <hr>
  <p>我有一个信仰：代码一定要写的优雅，简洁，要有语言特色。</p>
  <p>首先抛出一个问题，为什么现在有那么多的编程语言，为什么不是一个语言统治天下（心中回忆起了Ada语言），原因很简单，每个语言都有每个语言的特性（优点）。</p>
  <p>那么如果去高效的学习编程呢？毕竟这行业挺火，挣钱也不少。不少人眼热也纷纷想分一杯羹。</p>
  <p>前期如果你是以静态语言入门，比如Java，C这样变量会声明类型的语言。找本质量高的书，别随随便便买本《21天精通系列》(垃圾书)。</p>
  <p>比如C，就用C语言发明人写的书：《The C Program language》,中文翻译是C语言<b>程序设计</b>。</p>
  <p>然后顺带这去刷一些<a href="http://acm.nyist.net/JudgeOnline/problemset.php?typeid=1">入门的题目</a>来提高自己对程序设计的认识。</p>
  <p>先不要上来就做项目（如果你之前没学过编程的话），我先摆明自己的观点：项目驱动型学习是最有效的。但是这也是在你懂一些编程之后的事情了。</p>
  <p>我也知道一些培训班的宣传，几个月入门到精通。就这么说把，我四级年开始接触静态Web，虽然中途没有一直搞，到现在了HTML5的特性也没掌握。</p>
  <p>学习是一件循序渐进的事情，非一日之功，要慢慢来。</p>
  <p>一些好建议：</p>
  <p>比如一些小白问大神，用什么工具去编程阿？如果大神回复说用什么Vim,Emacs,编辑器之类的，那么这个所谓“大神”是很不负责人的，或者说只是个徒有其表的“大神”。</p>
  <p>学习编程入门，一定要靠IDE（集成开发环境），比如eclipse，Dev c++。为什么？首先IDE可以帮助你做很多事情，比如一键运行程序。比如给你提示。</p>
  <p>有人可能会说，编辑器也可以阿，Emacs可以写一个宏来运行阿，我只能说呵呵，刚入们的新手会这个?他们看得懂Emacs Lisp?还没等学会使用编辑器呢，估计就放弃了。</p>
  <p>而且IDE也会自带很多工具，当你代码出出错的时候，它会给很多提示。前期的学习最好是软件都自带功能最好，不需要那么麻烦的去百度。</p>
  <p>学习编程语言的时候，不要说你会了简单的语法就说会这个语言了，如果你看菜鸟教程，半天把这个语言的语法学会了，你说你会这个语言了，那我岂不是不知道会多少个语言了。</p>
  <p>我从来只对外人说我会Java Python 和Scheme。你看虽然我也学过C语言，还拿C语言刷过题，参加过比赛，但我不说我会C语言，
    <a href="./再见,我曾经喜欢的C语言.html">原因（Click me）</a>。</p>
  <p>要善于利用前人给你做好的工具。比如debug.</p>
  <p>最好不要傻傻的去问别人类似于：这段程序什么时候运行阿？这个变量那个时候是多少阿？这个程序运行后的结果是啥阿？</p>
  <p>拜托阿，程序员跟电脑打交道，你去电脑不更正确嘛！！！运行程序的是电脑，又不是人脑。电脑说啥就是啥阿。</p>
  <p>学会使用debug，通过debug你可以看到程序的运行过程，debug会告诉你很多信息，比如变量的地址。变量当下的值等等很多。</p>
  <p>有人会讨论这样一个问题：静态代码块什么时候执行的，构造函数什么时候执行的？你所想要的答案都在debug中。</p>
  <p>因为程序是一条一条执行的，而debug也是一条一条执行的，所以通过debug看到的过程，就是计算机执行的过程（这部废话么）。</p>

  <p>有人问：我每天坚持学习六个小时，三个月下来能成什么样子。</p>
  <p>我只能说还差的很多，我现在在家每天最起码十个小时，感觉都很虚，学习越发现自己不会的东西太多，没有精通的东西太多。</p>
  <p>在心里默默问自己一个问题：我希望被别人骂吗？如果不希望自己被别人骂傻逼，那就花个两三年，放弃自己的业余爱好，让孤独陪伴左右。</p>
  <p>程序不仅仅是能运行这么简单，他更是要用，要给未来人看的。</p>
  <p>一定要时刻让自己尽量写出高质量的代码。之前有朋友让我帮他看她写的程序，一般来说，如果这个项目一千行以内的话（因为一个晚上就能搞定，耽误不了多少时间）.</p>
  <p>我一般是先问它这个程序的需求，然后重写。重写别改他的代码要来得快。我忍受不了低质量的代码。</p>
  <p>所以说，当你入门学编程的时候，请牢记；程序设计。让代码更有条理，多加练习。</p>
  <p>十年磨一剑(^_^,你去找古人评理呀)，我相信，如果你每天花十个小时去努力认真的学习，三年左右你会称为一个合格的程序员。</p>
  <p>说些我其他的信仰：</p>
  <p>要学会忽略细节，理解复杂事务的关键就是避免不必要的细节、计算和思考。</p>
  <p>程序员的目标就是设计出能够表达成特定目标的程序。</p>
  <p>重写代码，排除特例，完美覆盖所有情况，这就是好的代码。</p>

</div>
<a href="https://github.com/ltoddy/ltoddy.github.io" target="_blank"><img
    style="position: absolute; top: 0; right: 0; border: 0;"
    src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67"
    alt="Fork me on GitHub"
    data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png">
</a>
</body>
</html>